import { userLogin, getUserInfo } from '@/api/user'

// 导入cookie 封装模块进行使用 ==> 将来要把token存储cookie中
import { cookieSetToken, cookieGetToken, cookieRemoveToken } from '@/utils/auth'

export default {
  // 子模块内 要加 命名空间
  namespaced: true,
  state: {
    token: cookieGetToken(),
    // 用户的个人信息
    userInfo: {}
  },
  getters: {},
  mutations: {
    setToken(state, payload) {
      state.token = payload
      // 把token存储cookie中
      cookieSetToken(payload)
    },
    setUserInfo(state, payload) {
      state.userInfo = payload
    },
    removeToken(state, payload) {
      // 清除token 用在退出功能上
      state.token = ''

      // 还要把cookie中存的token清除掉
      cookieRemoveToken()
    }
  },
  actions: {
    // todo 在这发请求，获取到token，commit调用setToken方法
    async ActionsSetToken(context, payload) {
      const { token } = await userLogin(payload)
      console.log(token)

      // 做啥
      context.commit('setToken', token)
    },

    // todo 发送请求来获取用户信息
    async Actions_SetUserInfo(context, payload) {
      // 在这调用接口（接口封装到api目录中）
      const { userInfo, menuList, btnList } = await getUserInfo()
      userInfo.btnList = btnList
      context.commit('setUserInfo', userInfo)
      // 返回一下用户资料
      return menuList
    }
  }
}
